再來進到 golang 邏輯控制的部分,go 因為保留字很少,相對的他的邏輯控制也相當簡單,下面就來介紹他
golang 正式來說有四種邏輯控制結構分別是:
先來起手式,跑10次迴圈並印出每次結果
package main
import (
"fmt"
)
func main() {
for i:=0;i<10;i++ {
fmt.Println(i)
}
}
https://play.golang.org/p/Bjy35JD63DT
for 也能當作 其他語言的 while使用,來看看下面範例
package main
import (
"fmt"
)
func main() {
i := 0
for i < 10 {
fmt.Println(i)
i++
}
}
https://play.golang.org/p/ArR0Kqy6ebO
我們延續for的 第一個範例稍作改良,不在迴圈聲明裡面指定範圍,而是在迴圈裡面加入 if 判斷式,來判斷範圍跳出迴圈
package main
import (
"fmt"
)
func main() {
i :=0
for {
if i>9 {
break
}
fmt.Println(i)
i++
}
}
https://play.golang.org/p/7RkJtF0UB00
有 if 當然也有else了
package main
import (
"fmt"
)
func main() {
i := 0
for i < 10 {
if i < 5 {
fmt.Printf("%d 小於 %d\n", i, 5)
} else {
fmt.Printf("%d 大於或等於 %d\n", i, 5)
}
i++
}
}
https://play.golang.org/p/adAxV5rycuo
if 有一個很方便的方法
package main
import (
"fmt"
)
func Test() int {
return 5
}
func main() {
if a := Test(); a >= 5 {
fmt.Println(a)
} else {
fmt.Println("no hit")
}
}
他可以呼叫完func 直接在一行裡面,對那個值做邏輯判斷,蠻多情境下,可以讓你的code,更清爽。
https://play.golang.org/p/rxHltWNF5oZ
switch 一般來說,是用在你的條件很多,如果用if去做,整個結構會看起來很複雜,所以這種情況就非常適合用switch
package main
import (
"fmt"
)
func main() {
a := 1
switch a {
case 1:
fmt.Println("hit 1")
case 2:
fmt.Println("hit 2")
default:
fmt.Println("no hit")
}
}
golang switch 跟其他語言不太一樣,他不需要特別下
break
這個關鍵字來跳出 case
https://play.golang.org/p/zHPVEojo1y2
基於個人喜好,以及這個結構,我只能想到,會造成 code 的複雜以及難閱讀,在推廣的角度下,不鼓勵大家用,所以也就不多做介紹了。